import * as Cesium from 'cesium'

export default function addWater() {
  let waterMinElevation = 200;
  let waterMaxElevation = 1000;
  let hierarchy = [
    Cesium.Cartesian3.fromDegrees(105.0, 45.0),
    Cesium.Cartesian3.fromDegrees(109.0, 45.0),
    Cesium.Cartesian3.fromDegrees(109.0, 48.0),
    Cesium.Cartesian3.fromDegrees(105.0, 48.0) // 闭合多边形
  ];
  // 定义水材质的属性
  let waterMaterialProperties = {
    baseWaterColor: new Cesium.Color(0.1, 0.3, 0.6, 1.0),       // 基础水色
    blendColor: Cesium.Color.RED,                            // 混合颜色
    // specularMap: Cesium.buildModuleUrl('Assets/Textures/waterSpecular.png'), // 高光贴图路径
    // normalMap: Cesium.buildModuleUrl('Assets/Textures/waterNormals.png'),    // 法线贴图路径
    frequency: 1000.0,                                         // 波浪频率
    animationSpeed: 0.01,                                      // 动画速度
    amplitude: 10.0,                                           // 振幅
    specularIntensity: 0.5                                     // 高光强度
  };
  
  // 使用 Material 类的 fromType 方法创建一个 Water 材质，并应用属性
  let waterMaterial = new Cesium.Material({
    fabric: {
      type: 'Water',
      uniforms: waterMaterialProperties
    }
  });
  // 1，使用 Primitive 类创建水面椭球体
  const water = new Cesium.Primitive({
    id: 'water',
    geometryInstances : [new Cesium.GeometryInstance({
      geometry : new Cesium.EllipsoidGeometry({
        radii : new Cesium.Cartesian3(500000.0, 500000.0, 1000.0),
        vertexFormat : Cesium.VertexFormat.POSITION_AND_NORMAL
      }),
      modelMatrix : Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(107.0, 46.0))
    })],
    appearance: new Cesium.EllipsoidSurfaceAppearance({
      material: waterMaterial,
      aboveGround: true
    })
  });
  window.viewer.scene.primitives.add(water);

  // 2，使用 Entity 类创建水面多边形
  // let polygon = window.viewer.entities.add({
  //   name: '面几何对象',
  //   polygon: {
  //     hierarchy: new Cesium.PolygonHierarchy(hierarchy),
  //     extrudedHeight: new Cesium.CallbackProperty(() => {
  //       if (waterMinElevation < waterMaxElevation) {
  //         waterMinElevation += 1
  //       } else {
  //         waterMinElevation = 200
  //       }
  //       return waterMinElevation
  //     }, false),
  //     // material: Cesium.Color.SKYBLUE.withAlpha(0.5),
  //     material: waterMaterial
  //   }
  // })
}
